/**
 * 版权所有：厦门市巨龙信息科技有限公司
 * Copyright 2023 Xiamen Dragoninfo Eng. Co. Ltd.
 * All right reserved.
 */
package com.github.alfred.convert;

import com.github.alfred.common.PageResult;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;

import java.util.List;

/**
 * 类说明
 *
 * @author chengh
 * @date 2023/7/17 10:48
 */
public interface PageConvertMapper<T, V> {
    /**
     * toPage
     *
     * @param vPage 分页
     * @return {@link Page<T>}
     */
    default Page<T> toPage(Page<V> vPage) {
        List<V> dos = vPage.getContent();
        List<T> vos = doList2VoList(dos);
        return new PageImpl<>(vos, vPage.getPageable(), vPage.getTotalElements());
    }

    /**
     * doList2VoList
     *
     * @param list list
     * @return {@link List<T>}
     */
    List<T> doList2VoList(List<V> list);


    /**
     * toPageResult
     *
     * @param vPage 分页
     * @return {@link PageResult<T>}
     */
    default PageResult<T> toPageResult(Page<V> vPage) {
        List<V> dos = vPage.getContent();
        List<T> vos = doList2VoList(dos);
        return PageResult.build(vos, vPage.getTotalElements());
    }
}
